﻿//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>

#include "common.h"

// C语言提供了可以随意滥用的 goto 语句

// 语法：goto 标签; 在语句前或后使用“标签:”（只能用一次），注意冒号
// 注意如果 goto 定义的“标签”是局部变量，不能跨函数使用

void goto_test()
{
	//标签:  // 每个定义标签只能使用一次
	printf("语句一执行\n");
	printf("语句二执行\n");
	goto 标签;   // 注意“标签”放前面会变成死循环
	printf("语句三执行\n");
	printf("语句四执行\n");
标签:
	printf("语句五执行\n");
	printf("下课\n");
}

// 设置电脑五分钟关机，期间输入 “我是猪” 取消关机
void shutdown_test()
{
	char pig[50] = { 0 };
	// 在 cmd 命令里面 shutdown -s -t num 表示 num 秒后关机（-t倒计时）
	// 在 cmd 命令里面 shutdown -a 表示结束关机计时
	system("shutdown -s -t 300");
	//do
	//{
again:
	printf("电脑在300秒内关机，请根据提示信息输入内容"
		"如果输入“我是猪”就取消关机，"
		"输入“确定关机”则退出提示，稍后关机\n");
	int ipt = scanf("%s", pig);
	if (0 == strcmp(pig, "我是猪"))
	{
		system("shutdown -a");
		printf("取消关机\n");
		goto cancel;
	}
	else if (0 == strcmp(pig, "确定关机"))
	{
		printf("关机\n");
		system("shutdown -s -t 1");
		goto cancel;  // 可以多次定义相同的标签
	}
	else
		goto again;
cancel:  // 标签只能用一次
	//} while (1);  // goto 可以用这里的 do...while 实现
	//return 0;
	; // 空语句，用于 cancel 标签
}
